package br.com.app.view.form
{
    import flash.display.Sprite;
    
    import mx.collections.ArrayCollection;
    import mx.controls.DataGrid;
   
    public class DataGridColorido extends DataGrid
    {
       
        /**
         * Propriedade que deve conter a função que define
         * as cores de cada linha.
         *
         * @param data Contém os dados do item atual.
         * @param color Contém a cor para o fundo do item.
         * @param index Contém o indice do item atual.
         */
        public var rowColorFunction:Function;
       
        /**
         * Construtor.
         */
        public function DataGridColorido()
        {
            // Método construtor da superclasse (DataGrid).
            super();
        }
       
       
        /**
         * Desenha o background das linhas.
         *
         * @param s Um Sprite que contém os gráficos da linha.
         * @param rowIndex Index das linhas exibidas. O header não conta.
         * @param y Posição Y para o fundo.
         * @param height Largura sugerida.
         * @param color Cor sugerida.
         * @param dataIndex Index do item no DataProvider.
         * @return void
         */
        override protected function drawRowBackground(s:Sprite, rowIndex:int, y:Number, height:Number, color:uint, dataIndex:int):void
        {
            if (this.rowColorFunction != null && ArrayCollection(this.dataProvider) && dataIndex < ArrayCollection(this.dataProvider).length)
            {
                var item:Object = ArrayCollection(this.dataProvider).getItemAt(dataIndex);
                var index:int = rowIndex;
               
                color = this.rowColorFunction(item, color, index);
            }
           
            // Chamando o método da superclasse
            super.drawRowBackground(s, rowIndex, y, height, color, dataIndex);
        }
   
    }
}